//package org.cypress.rtpack.common.config;
//
//import java.util.List;
//
//import org.cypress.rtpack.common.core.Constants;
//import org.springframework.http.InvalidMediaTypeException;
//import org.springframework.http.MediaType;
//import org.springframework.util.CollectionUtils;
//import org.springframework.web.HttpMediaTypeNotAcceptableException;
//import org.springframework.web.accept.ContentNegotiationStrategy;
//import org.springframework.web.accept.HeaderContentNegotiationStrategy;
//import org.springframework.web.context.request.NativeWebRequest;
//
//import org.cypress.rtpack.common.utils.ThreadLocalUtil;
//
///**
// * @see HeaderContentNegotiationStrategy
// * @author vv
// * @since 2020/8/7
// */
//public class ThreadLocalContentNegotiationStrategy implements ContentNegotiationStrategy {
//
//	@Override
//	public List<MediaType> resolveMediaTypes(NativeWebRequest request) throws HttpMediaTypeNotAcceptableException {
//		// 从线程局部变量中获取响应结构类型，然后清除
//		String mediaType = ThreadLocalUtil.get(Constants.ACCEPT_MEDIA_TYPE);
//		ThreadLocalUtil.remove(Constants.ACCEPT_MEDIA_TYPE);
//		if (mediaType == null) {
//			// 默认json
//			mediaType = MediaType.APPLICATION_JSON_VALUE;
//		}
//
//
//		try {
//			List<MediaType> mediaTypes = MediaType.parseMediaTypes(mediaType);
//			MediaType.sortBySpecificityAndQuality(mediaTypes);
//			return !CollectionUtils.isEmpty(mediaTypes) ? mediaTypes : MEDIA_TYPE_ALL_LIST;
//		} catch (InvalidMediaTypeException ex) {
//			throw new HttpMediaTypeNotAcceptableException(
//					"Could not parse 'Accept' header " + mediaType + ": " + ex.getMessage());
//		}
//	}
//}
